#ifndef prs_FrmChildren_H
#define prs_FrmChildren_H

#include "prs_FrmUseTemplate.h"
#include "prs_FrmPanel.h"
#include "prs_FrmString.h"
#include "prs_FrmInteger.h"
#include "prs_FrmDate.h"
#include "prs_FrmDouble.h"
#include "prs_FrmButton.h"
#include "prs_FrmLine.h"
#include "prs_FrmPara.h"
#include "prs_FrmParaEdit.h"
#include "prs_FrmCol.h"
#include "prs_FrmRow.h"
#include "prs_FrmSplitter.h"
#include "prs_FrmScrollBar.h"
#include "prs_FrmFrame.h"
#include "prs_FrmPageControl.h"
#include "prs_FrmTable.h"
#include "prs_FrmImage.h"
#include "prs_Menu.h"
#include "prs_FrmScinPanel.h"

namespace prs {

///////////////////////////////////////////////////////////////////////////////

struct TRuleFrmChildren : public TRuleFrmChildrenBase
{
  TRuleFrmChildren(
    snt::text::TContext &Context,
    svl::TVariant &VParentNode,
    TRuleFrmGeom &RFrmGeom,
    TRuleSetAttrValue &RSetAttrValue,
    TRuleSetStyle &RStyle
  );
  void Init(
    TRuleUseTemplate &RUseTemplate
  );
  
private:  
  bool FUseControls(snt::text::TIdent::TFuncClosureDoEntryParams &Params);
  //
  snt::text::TContext &context;
  svl::TVariant &vParentNode;
  snt::TAlter A;

  TRuleSetNodeIdOptionally RSetNodeIdOptionally;

  TRuleFrmString RString;
  TRuleFrmInteger RInteger;
  TRuleFrmDate    RDate;
  TRuleFrmDouble  RDouble;
  TRuleFrmPanel RPanel;
  TRuleFrmButton RButton;
  TRuleFrmLine RLine;
  TRuleFrmPara RPara;
  TRuleFrmParaEdit RParaEdit;
  TRuleFrmCol RCol;
  TRuleFrmRow RRow;
  TRuleFrmRowExpand RRowExpand;
  TRuleFrmVSplitter RVSplitter;
  TRuleFrmHSplitter RHSplitter;
  TRuleFrmVScrollBar RVScrollBar;
  TRuleFrmHScrollBar RHScrollBar;
  TRuleFrmFrame RFrame;
  TRuleFrmPageControl RPageControl;
  TRuleFrmPage RPage;
  TRuleFrmTable RTable;
  TRuleFrmImage RImage;
  //TRuleMenu RMenu;
  TRuleFrmScinPanel RScinPanel;
};

///////////////////////////////////////////////////////////////////////////////
}

#endif
